package com.matrix.app.flux.project.stage.service;

import com.matrix.app.flux.project.stage.data.StageDto;
import com.matrix.app.flux.project.stage.data.StagePo;
import reactor.core.publisher.Mono;

/**
 * 项目阶段服务接口
 *
 * Copyright © 海平面工作室 版权所有
 *
 * @Author: Leo
 * @Create: 2025/06/02 10:00
 * @Since 1.2
 */
public interface StageService {
    
    /**
     * 新增阶段
     * @param stage 阶段信息
     * @return 新增后的阶段
     */
    Mono<StagePo> save(StagePo stage);

    /**
     * 根据ID删除阶段
     * @param id 阶段ID
     * @return 被删除的阶段信息
     */
    Mono<StagePo> deleteById(Long id);

    /**
     * 根据ID查询阶段
     * @param id 阶段ID
     * @return 阶段信息
     */
    Mono<StagePo> findById(Long id);

    /**
     * 分页查询阶段列表
     * @param dto 查询条件
     * @return 分页VO对象
     */
    Mono<StageDto> findStages(StageDto dto);
} 